import org.junit.Test;

import static org.junit.Assert.*;

public class NGuessNumberTest {
    @Test
    public void generateAnswerTest(){
        NGuessNumber n =new NGuessNumber();
        assertEquals(4,n.generateAnswer().length);
        System.out.println("数字数量为4");
        int[] num=n.generateAnswer();
        boolean cf= true;
        boolean numberpd = true;

        for(int i=0;i<4;i++){
            if(num[i]>=0&&num[i]<=9){
                numberpd=true;
            }else{
                numberpd=false;
            }
            for(int j=0;j<4;j++){
                if (j!=i){
                    if(num[j]==num[i]){
                        cf=false;
                    }
                }
            }
        }
        assertTrue(cf);
        System.out.println("无重复数字");
        assertTrue(numberpd);
        System.out.println("数字都在0-9之间，正确");
    }

    @Test
    public void getPlayerInputTest(){
        assertEquals(4, NGuessNumber.getPlayerInput().length);
        System.out.println("玩家猜测的数字符合要求");
    }
    @Test
    public void compareGuessAnswerTest(){
        NGuessNumber n =new NGuessNumber();
        int testguess []= n.getPlayerInput();
        int testa []= n.generateAnswer();
        int A=0;
        for(int i=0;i<4;i++){
            for (int j=0;j<4;j++){
                if(testguess[j]==testa[i]){
                    A++;
                    break;
                }
            }
        }
        String da = "一共猜对了"+A+"个";
        assertEquals(da,n.compareGuessAnswer());
        System.out.println("测试比较玩家猜测和答案后，返回的提示信息，正确");
    }
    @Test
    public void isWin() {
        NGuessNumber n = new NGuessNumber();

        if (n.isWin()) {
            assertTrue(n.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
        } else if (!n.isWin()) {
            assertFalse(n.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
        } else {
            assertTrue(n.isWin());
            assertFalse(n.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型错误");
        }
    }

    @org.junit.Before
    public void setUp() throws Exception {
    }

    @org.junit.After
    public void tearDown() throws Exception {
    }
}